package com.zou.practice.sort;

import com.alibaba.fastjson.JSON;

/**
 * 选择排序：选择排序与冒泡排序被称为简单排序，也是最简单容易理解的排序
 *
 * @author zouyaowen
 * @date 2020-09-13
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {13, 3, 2, 9, 8, 7, 11};
        System.out.println(JSON.toJSONString(arr));
        selectSort(arr);
        System.out.println(JSON.toJSONString(arr));
    }

    /**
     * 选择排序核心思想:每次遍历获取最小值，与未排序的索引数据进行交换位置
     *
     * @param arr 需要排序的数组
     */
    private static void selectSort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            int temp = arr[i];
            int minIndex = i;
            for (int j = i; j < arr.length - 1; j++) {
                if (temp > arr[j + 1]) {
                    minIndex = j + 1;
                    temp = arr[j + 1];
                }
            }
            if (i != minIndex) {
                arr[minIndex] = arr[i];
                arr[i] = temp;
            }
        }
    }
}
